package com.atde._05_behavioral_design_patterns.state.app;


import java.util.Random;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._05_behavioral_design_patterns.state.app
 * @Author: Del
 * @CreateTime: 2025-06-30  11:22
 * @Description: 状态模式 --- 具体状态类 --- 表示当前状态为可以抽奖状态
 * @Version: 1.0
 */
public class CanRaffleSatte extends State{

    RaffleActivity activity;

    public CanRaffleSatte(RaffleActivity activity) {
        this.activity = activity;
    }

    // 已经扣除了积分，不能再扣除
    @Override
    void deductMoney() {
        System.out.println("已经扣除过积分了");
    }

    // 可以抽奖，抽完奖后根据实际情况改变新的状态
    @Override
    boolean raffle() {
        System.out.println("正在抽奖...请稍等！");
        Random r = new Random();
        int num = r.nextInt(10);
        // 10%中奖机会
        if (num == 0) {
            System.out.println("恭喜中奖了！");
            // 改变状态为发放奖品状态
            activity.setState(activity.getDispenseState());
            return true;
        } else {
            System.out.println("很遗憾没有中奖！");
            // 改变状态为不能抽奖状态
            activity.setState(activity.getNoRaffleState());
            return false;
        }
    }

    @Override
    void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
